Memory systems typically store data with some level of redundancy. Redundancy helps protect the integrity of data by providing a means for verifying data in the event of a problem during storage or if data becomes corrupted while being stored. Memory systems employ error correction codes (ECC) offering varying levels of protection for data. In general, data stored with a higher level of redundancy means that a larger set of redundancy data is stored and the data is afforded a higher level of protection. Increasing redundancy acts to protect the data by increasing the probability that corrupted data will be backed up with uncorrupted, redundantly stored data.
However, while data reliability may be increased by maximizing the amount of redundancy data stored in memory, this policy has drawbacks. For example, increased redundancy results in a-need for more storage space and consequently higher storage costs. Higher redundancy means that less of the memory is available for use by the system, as half or more of the memory must be reserved for redundant storage.
Conventional memory systems store data with a uniform level of redundancy. These systems are inefficient because all data may not need the same level of protection. However, very often all data is stored at a high level of redundancy to reduce the risk that the small amount of very important data may be lost. What is needed is a method and a system for storing data in a memory system with different levels of redundancy.